搜索 K
Appearance
博客正在加载中...
Appearance
Redis 的作者 Salvatore Sanfilippo 曾经发表过 Redis 宣言,其中提到 Redis 以简洁为美。同样在安全层面 Redis 也没有做太多的工作。
Redis 的安全设计是在“Redis 运行在可信环境”这个前提下做出的。在生产环境运行时不能允许外界直接连接到 Redis 服务器上,而应该通过应用程序进行中转,运行在可信的环境中是保证 Redis 安全的最重要方法。
Redis 的默认配置会接受来自任何地址发送来的请求,即在任何一个拥有公网 IP 的服务器上启动 Redis 服务器,都可以被外界直接访问到。要更改这一设置,在配置文件中修改 bind 参数,如只允许本机应用连接 Redis,可以将 bind 参数改成:
bind 127.0.0.1可以通过配置文件中的 requirepass 参数为 Redis 设置一个密码。例如:
requirepass 123456由于 Redis 的性能极高,并且输入错误密码后 Redis 并不会进行主动延迟(考虑到 Redis 的单线程模型),所以攻击者可以通过穷举法破解 Redis 的密码(1 秒内能够尝试十几万个密码),因此在设置时一定要选择复杂的密码,这里仅仅是为了方便演示,才设置的这么简单。
客户端每次连接到 Redis 时都需要发送密码,否则 Redis 会拒绝执行客户端发来的命令。例如:
redis> GET foo
(error) ERR operation not permitted 发送密码需要使用 AUTH 命令,就像这样:
redis> AUTH 123456
OK 然后才可以执行命令:
redis> GET foo
"1" 注意:配置 Redis 复制的时候如果主数据库设置了密码,需要在从数据库的配置文件中通过 masterauth 参数设置主数据库的密码,以使从数据库连接主数据库时自动使用 AUTH 命令认证。